<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
	<script type="text/javascript">
		// var a = 1;
		// function foo(){
		// 	console.log(this.a);
		// }
		// var obj = {
		// 	a:0,
		// 	foo:foo
		// }
		// // 把obj.foo()赋值给bar,造成隐式丢失
		// obj.foo();
		// var bar = obj.foo();  //this指向ojb 所有打印0
		// bar();  //this指向window 所有打印0
		
		// var a = 1;
		// function foo(){
		// 	console.log(this.a);
		// }
		// function bar(fn){
		// 	fn()
		// }
		// var obj = {
		// 	a: 0,
		// 	foo:foo
		// }
		// bar(obj.foo)
		
		// var a = 10;
		// function foo(){
		// 	console.log(this.a)
		// }
		// var obj = {
		// 	a: 0,
		// 	foo:foo
		// }
		// setTimeout(obj.foo,1000)
		
		// var a = 1;
		// function foo(){
		// 	console.log(this.a);
		// }
		// var obj = {
		// 	a:0,
		// 	foo:foo
		// }
		// var p = {a:4};
		// (p.foo = obj.foo)();
		
		// var a = 1;
		// function foo(){
		// 	console.log(this.a);
		// }
		// var obj = {
		// 	a:0,
		// 	foo:foo
		// }
		// (obj.foo = obj.foo)(); // 1
		// (false || obj.foo)(); // 1
		// (1,obj.foo)(); //1
		
		// var a = 0;
		// function foo(){
		// 	console.log(this.a);
		// }
		// var obj = {
		// 	a:2
		// }
		// foo()//0
		// foo.call(obj)// 2
		
		
		// 1、 如果new关键字来执行函数  相当于构造函数来实例化对象，那么内部的this指向当店实例化的对象 
		function fn(){
			console.log(this);
		}
		var fn = new fn()
		console.log(fn);
	</script>
</html>
